上一章介紹了Lombok的用法與功能
接下來把其他的Model都更改, 減少我們的程式碼
Certificate.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class Certificate {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long certificateId;
    @NonNull
    private String name;
    @ManyToOne
    @JoinColumn(name = "skill_id")
    @NonNull
    private Skill skill;
    @ManyToOne
    @JoinColumn(name = "company_id")
    @NonNull
    private Company company;
}
Company.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long companyId;
    @NonNull
    private String name;
    
}
ExamInfo.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class ExamInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long examId;
    @ManyToOne
    @JoinColumn(name = "certificate_id")
    @NonNull
    private Certificate certificate;
    @ManyToOne
    @JoinColumn(name = "vendor_id")
    @NonNull
    private Vendor vendor;
    @NonNull
    private Date examDate;
    @NonNull
    private Date publishDate;
    
}
MemberExam.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class MemberExam {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long memberExamId;
    @ManyToOne
    @JoinColumn(name = "mid")
    @NonNull
    private Member member;
    @ManyToOne
    @JoinColumn(name = "exam_id")
    private ExamInfo examInfo;
    private Date joinTime;
    
}
MemberSkill.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class MemberSkill {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long memberSkillId;
    @ManyToOne
    @JoinColumn(name = "mid")
    @NonNull
    private Member member;
    @ManyToOne
    @JoinColumn(name = "skill_id")
    @NonNull
    private Skill skill;
}
Skill.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class Skill {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long skillId;
    @NonNull
    private String name;
    @NonNull
    private String type;
}
Vendor.java
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Entity
public class Vendor {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long vendorId;
    @NonNull
    private String name;
}
如此一來我們的程式碼瞬間少很多行, 讓閱讀變得更容易, 也減少了許多繁複的步驟
Lombok還有許多方便的功能, 例如val, var, @Cleanup, @Value, @Builder, @Log, @EqualsAndHashCode....等等
英文好的朋友可以直接到官網看, 在這裡附上官方網站
下一章我們正式進入Controller
Day 11 - Controller And RESTful (1)